package com.innovations.inn.mapper;

import com.innovations.inn.domain.ResearchOutcomes;
import com.innovations.inn.domain.request.RequestFilterListPreview;
import com.innovations.inn.domain.request.RequestListPreview;
import com.innovations.inn.domain.request.RequestResearchImport;
import com.innovations.inn.domain.response.ResponseItemCount;
import com.innovations.inn.domain.response.ResponseListPreview;
import com.innovations.inn.domain.response.ResponseResearchOutcomesList;
import java.util.List;

/**
 * 科研成果Mapper接口
 *
 * @author dp
 * @date 2024-08-10
 */
public interface ResearchOutcomesMapper {
    /**
     * 查询科研成果
     *
     * @param researchOutcomesId 科研成果主键
     * @return 科研成果
     */
    ResearchOutcomes selectResearchOutcomesByResearchOutcomesId(Long researchOutcomesId);

    /**
     * 查询科研成果列表
     *
     * @param researchOutcomes 科研成果
     * @return 科研成果集合
     */
    List<ResponseResearchOutcomesList> selectResearchOutcomesList(ResearchOutcomes researchOutcomes);

    /**
     * 查询科研成果合计
     *
     * @param researchOutcomes 科研成果
     * @return 科研成果合计
     */
    List<ResponseItemCount> selectResearchOutcomesCount(ResearchOutcomes researchOutcomes);

    /**
     * 查询科研成果列表-预览展示（全部）
     *
     * @param requestListPreview 科研成果列表预览入参
     * @return 科研成果集合
     */
    List<ResponseListPreview> selectOutcomesPreview(RequestListPreview requestListPreview);

//    /**
//     * 查询科研成果列表-预览展示（关注）
//     *
//     * @param requestListPreview 科研成果列表预览入参
//     * @return 科研成果集合
//     */
//    List<ResearchOutcomes> selectOutcomesPreviewAtt(RequestListPreview requestListPreview);

    /**
     * 查询科研成果列表-预览展示-过滤
     *
     * @param requestListPreview 科研成果列表预览入参
     * @return 科研成果集合
     */
    List<ResponseListPreview> selectOutcomesFilterPreview(RequestFilterListPreview requestListPreview);

    /**
     * 新增科研成果
     *
     * @param researchOutcomes 科研成果
     * @return 结果
     */
    Integer insertResearchOutcomes(ResearchOutcomes researchOutcomes);

    /**
     * 修改科研成果
     *
     * @param researchOutcomes 科研成果
     * @return 结果
     */
    Integer updateResearchOutcomes(ResearchOutcomes researchOutcomes);

    /**
     * 删除科研成果
     *
     * @param researchOutcomesId 科研成果主键
     * @return 结果
     */
    Integer deleteResearchOutcomesByResearchOutcomesId(Long researchOutcomesId);

    /**
     * 批量删除科研成果
     *
     * @param researchOutcomesIds 需要删除的数据主键集合
     * @return 结果
     */
    Integer deleteResearchOutcomesByResearchOutcomesIds(Long[] researchOutcomesIds);

    /**
     * 查询导出科研成果列表
     *
     * @param researchOutcomes 科研成果
     * @return 科研成果导出集合
     */
    List<RequestResearchImport> selectExport(ResearchOutcomes researchOutcomes);

}
